﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Web;
using System.Data.SqlClient;
using System.Configuration;
using System.Data;

/// <summary>
/// Summary description for ConnectDB
/// </summary>
public class ConnectDB
{
    //get of set execnonquer of exec reader
    private SqlCommand cmd;
    private SqlDataReader reader;
    public static SqlConnection _Connection;
    //public static SqlConnection _Connection;

    private ArrayList vertrekLuchtHavens;
    [MethodImplAttribute(MethodImplOptions.Synchronized)]
    public ArrayList getVertrekLuchthavens()
    {
        
        try
        {
            cmd = new SqlCommand(sp.getVertrekLuchthavens, _Connection);
            cmd.CommandType = CommandType.StoredProcedure;
            _Connection.Open();
            reader = cmd.ExecuteReader();
            vertrekLuchtHavens = new ArrayList();
            while(reader.Read())
                vertrekLuchtHavens.Add(reader["LuchthavenNaam"].ToString());
        }
        catch (SqlException e)
        {
           
            LogError.writeToLogFile(e.Message);
        }
        finally
        {

            
           _Connection.Close();
            cmd = null;
            reader = null;
        }
        if(vertrekLuchtHavens != null)
        return vertrekLuchtHavens;
        else
        {
            return null;
        }
    }


    private ArrayList bestemmingLuchthavens;
    [MethodImplAttribute(MethodImplOptions.Synchronized)]
    public ArrayList getBestemmingLuchthavens()
    {
        try
        {
            cmd = new SqlCommand(sp.getBestemmingLuchthavens, _Connection);
            cmd.CommandType = CommandType.StoredProcedure;
            _Connection.Open();
            reader = cmd.ExecuteReader();
            bestemmingLuchthavens = new ArrayList();
            while (reader.Read())
                bestemmingLuchthavens.Add(reader["BestemmingNaam"].ToString());
        }
        catch (SqlException e)
        {
            e.ToString();//dit nog wijzigen
        }
        finally
        {
            reader.Close();
            _Connection.Close();
            cmd = null;
            reader = null;
        }
        return bestemmingLuchthavens;
    }

    private ArrayList vluchtTijden;
    [MethodImplAttribute(MethodImplOptions.Synchronized)]
    public ArrayList getVluchtTijden()
    {
        try
        {
            cmd = new SqlCommand(sp.getVluchtTijden, _Connection);
            cmd.CommandType = CommandType.StoredProcedure;
            _Connection.Open();
            reader = cmd.ExecuteReader();
            vluchtTijden = new ArrayList();
            while (reader.Read())
                vluchtTijden.Add(reader["Tijd"].ToString());
        }
        catch (SqlException e)
        {
            e.ToString();//dit nog wijzigen
        }
        finally
        {
            reader.Close();
            _Connection.Close();
            cmd = null;
            reader = null;
        }
        return vluchtTijden;
    }


	public ConnectDB()
    {
        _Connection = new SqlConnection(@"Data Source=WIN-DQ5DJKZ13ZJ;Initial Catalog=InHollandAir;User ID=joris;Password=AjaxAmsterdam123");
        //_Connection.ConnectionString = ; //connectionstring is in web.config file
    }

   

    public SqlConnection Connection
    {
        get
        {
            return _Connection; // get the connectionstring
        }
    }

    [MethodImplAttribute(MethodImplOptions.Synchronized)]
    public void persoonNaarDB(String spNaam, Persoon p)
    {
        try
        {
            SqlCommand cmd = new SqlCommand(spNaam , _Connection);
            cmd.CommandType = CommandType.StoredProcedure;

            SqlParameter p1 = new SqlParameter("@voornaam", SqlDbType.VarChar, 50);
            SqlParameter p2 = new SqlParameter("@tussenvoegsel", SqlDbType.VarChar, 50);
            SqlParameter p3 = new SqlParameter("@achternaam", SqlDbType.VarChar, 50);
            SqlParameter p4 = new SqlParameter("@geslacht", SqlDbType.Char, 1);////////DEZE AANPASSEN OP GUI !!!!!M/V
            SqlParameter p5 = new SqlParameter("@geboortedatum", SqlDbType.VarChar, 50);
            SqlParameter p6 = new SqlParameter("@telefoonnummer", SqlDbType.VarChar, 10);
            SqlParameter p7 = new SqlParameter("@emailadres", SqlDbType.VarChar, 50);
            SqlParameter p8 = new SqlParameter("@inhollandmiles", SqlDbType.Int);
            SqlParameter p9 = new SqlParameter("@postcode", SqlDbType.VarChar, 6);
            SqlParameter p10 = new SqlParameter("@plaats", SqlDbType.VarChar,50);
            SqlParameter p11 = new SqlParameter("@straatnaam", SqlDbType.VarChar, 50);
            SqlParameter p12 = new SqlParameter("@huisnummer", SqlDbType.VarChar, 10);
            SqlParameter p13 = new SqlParameter("@wachtwoord", SqlDbType.VarChar, 200);
            SqlParameter p14 = new SqlParameter("@salt", SqlDbType.VarChar, 50);
            SqlParameter p15 = new SqlParameter("@vraag", SqlDbType.VarChar, 50);
            SqlParameter p16 = new SqlParameter("@antwoord", SqlDbType.VarChar, 50);


            p1.Value = p.Voornaam;
            p2.Value = p.TussenVoegsel;
            p3.Value = p.Achternaam;
            p4.Value = p.Geslacht;
            p5.Value = p.GeboorteDatum;
            p6.Value = p.TelefoonNummer;
            p7.Value = p.EMailAdres;
            p8.Value = p.InhollandMiles;
            p9.Value = p.Postcode;
            p10.Value = p.Plaats;
            p11.Value = p.StraatNaam;
            p12.Value = p.Huisnummer;
            p13.Value = p.Password;
            p14.Value = p.Salt;
            p15.Value = p.Vraag;
            p16.Value = p.Antwoord;


            cmd.Parameters.Add(p1);
            cmd.Parameters.Add(p2);
            cmd.Parameters.Add(p3);
            cmd.Parameters.Add(p4);
            cmd.Parameters.Add(p5);
            cmd.Parameters.Add(p6);
            cmd.Parameters.Add(p7);
            cmd.Parameters.Add(p8);
            cmd.Parameters.Add(p9);
            cmd.Parameters.Add(p10);
            cmd.Parameters.Add(p11);
            cmd.Parameters.Add(p12);
            cmd.Parameters.Add(p13);
            cmd.Parameters.Add(p14);
            cmd.Parameters.Add(p15);
            cmd.Parameters.Add(p16);
            _Connection.Open();
            cmd.ExecuteNonQuery();
        }
        catch (Exception e)
        {
            throw new Exception("error op query" + e.ToString());//deze nog aanpassen naar error weergeven security idee
            
        }
        finally
        {
            _Connection.Close();
        }
    }

    [MethodImplAttribute(MethodImplOptions.Synchronized)]
    public void persoonWijzig(String query, Persoon p)
    {
        try
        {
            SqlCommand cmd = new SqlCommand(query, _Connection);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter p0 = new SqlParameter("@klantnr", SqlDbType.Int);
            SqlParameter p1 = new SqlParameter("@voornaam", SqlDbType.VarChar, 50);
            SqlParameter p2 = new SqlParameter("@tussenvoegsel", SqlDbType.VarChar, 50);
            SqlParameter p3 = new SqlParameter("@achternaam", SqlDbType.VarChar, 50);
            SqlParameter p4 = new SqlParameter("@geslacht", SqlDbType.Char, 1);
            SqlParameter p5 = new SqlParameter("@geboortedatum", SqlDbType.VarChar, 50);
            SqlParameter p6 = new SqlParameter("@telefoonnummer", SqlDbType.VarChar, 10);
            SqlParameter p7 = new SqlParameter("@emailadres", SqlDbType.VarChar, 50);
            SqlParameter p8 = new SqlParameter("@postcode", SqlDbType.VarChar, 6);
            SqlParameter p9 = new SqlParameter("@plaats", SqlDbType.VarChar, 50);
            SqlParameter p10 = new SqlParameter("@straatnaam", SqlDbType.VarChar, 50);
            SqlParameter p11 = new SqlParameter("@huisnummer", SqlDbType.VarChar, 10);
            SqlParameter p12 = new SqlParameter("@vraag", SqlDbType.VarChar, 50);
            SqlParameter p13 = new SqlParameter("@antwoord", SqlDbType.VarChar, 50);
 
            p0.Value = p.KlantId;
            p1.Value = p.Voornaam;
            p2.Value = p.TussenVoegsel;
            p3.Value = p.Achternaam;
            p4.Value = p.Geslacht;
            p5.Value = p.GeboorteDatum;
            p6.Value = p.TelefoonNummer;
            p7.Value = p.EMailAdres;
            p8.Value = p.Postcode;
            p9.Value = p.Plaats;
            p10.Value = p.StraatNaam;
            p11.Value = p.Huisnummer;
            p12.Value = p.Vraag;
            p13.Value = p.Antwoord;

            cmd.Parameters.Add(p0);
            cmd.Parameters.Add(p1);
            cmd.Parameters.Add(p2);
            cmd.Parameters.Add(p3);
            cmd.Parameters.Add(p4);
            cmd.Parameters.Add(p5);
            cmd.Parameters.Add(p6);
            cmd.Parameters.Add(p7);
            cmd.Parameters.Add(p8);
            cmd.Parameters.Add(p9);
            cmd.Parameters.Add(p10);
            cmd.Parameters.Add(p11);
            cmd.Parameters.Add(p12);
            cmd.Parameters.Add(p13);

            _Connection.Open();
            cmd.ExecuteNonQuery();
        }
        catch (Exception e)
        {
            throw new Exception("error op query" + e.ToString());//deze nog aanpassen naar error weergeven security idee

        }
        finally
        {
            _Connection.Close();
        }
    }
}